{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Reflectance of a Waveguide Taper\n",
    "\n",
    "This example involves computing the reflectance of the fundamental mode of a linear waveguide taper. The structure and the simulation parameters are shown in the schematic below. We will verify that computing the reflectance, the fraction of the incident power which is reflected, using two different methods produces nearly identical results: (1) mode decomposition and (2) [Poynting flux](https://meep.readthedocs.io/en/latest/Introduction/#transmittancereflectance-spectra). Also, we will demonstrate that the scaling of the reflectance with the taper length is quadratic, consistent with analytical results from [Optics Express, Vol. 16, pp. 11376-92, 2008](http://www.opticsinfobase.org/abstract.cfm?URI=oe-16-15-11376).\n",
    "\n",
    "![](https://meep.readthedocs.io/en/latest/images/waveguide-taper.png)\n",
    "\n",
    "The structure, which can be viewed as a [two-port network](https://en.wikipedia.org/wiki/Two-port_network), consists of a single-mode waveguide of width 1 μm (`w1`) at a wavelength of 6.67 μm and coupled to a second waveguide of width 2 μm (`w2`) via a linearly-sloped taper of variable length `Lt`. The material is silicon with ε=12. The taper geometry is defined using a single [`Prism`](https://meep.readthedocs.io/en/latest/Python_User_Interface/#prism) object with eight vertices. PML absorbing boundaries surround the entire cell. An eigenmode current source with E<sub>z</sub> polarization is used to launch the fundamental mode. The dispersion relation (or \"band diagram\") of the single-mode waveguide is shown in [Tutorial/Eigenmode Source/Index-Guided Modes in a Ridge Waveguide](https://meep.readthedocs.io/en/latest/Python_Tutorials/Eigenmode_Source#index-guided-modes-in-a-ridge-waveguide). There is an eigenmode-expansion monitor placed at the midpoint of the first waveguide. This is a line monitor which extends beyond the waveguide in order to span the entire mode profile including its evanescent tails. The Fourier-transformed fields along this line monitor are used to compute the basis coefficients of the harmonic modes. These are computed separately via the eigenmode solver [MPB](https://mpb.readthedocs.io/en/latest/). This is described in [Mode Decomposition](https://meep.readthedocs.io/en/latest/Mode_Decomposition) where it is also shown that the squared magnitude of the mode coefficient is equivalent to the power (Poynting flux) in the given eigenmode. The ratio of the complex mode coefficients can be used to compute the [S parameters](https://en.wikipedia.org/wiki/Scattering_parameters). In this example, we are computing |S<sub>11</sub>|<sup>2</sup> which is the reflectance (shown in the line prefixed by \"refl:,\"). Another line monitor could have been placed in the second waveguide to compute the transmittance or |S<sub>21</sub>|<sup>2</sup> into the various guided modes (since the second waveguide is multi mode). The scattered power into the radiative modes can then be computed as 1-|S<sub>11</sub>|<sup>2</sup>-|S<sub>21</sub>|<sup>2</sup>. Following usual practice, a normalization run is required involving a straight waveguide to compute the power in the source.\n",
    "\n",
    "The structure has mirror symmetry in the $y$ direction which can be exploited to reduce the computation size by a factor of two. This requires using `add_flux` rather than `add_mode_monitor` (which is not optimized for symmetry) and specifying the keyword argument `eig_parity=mp.ODD_Z+mp.EVEN_Y` in the call to `get_eigenmode_coefficients`. Alternatively, the waveguide could have been oriented along an arbitrary oblique direction which would require specifying `direction=mp.NO_DIRECTION` and `kpoint_func` as the waveguide axis. For an example, see [Tutorials/Eigenmode Source/Index-Guided Modes in a Ridge Waveguide](https://meep.readthedocs.io/en/latest/Python_Tutorials/Eigenmode_Source/#index-guided-modes-in-a-ridge-waveguide)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-----------\n",
      "Initializing structure...\n",
      "Halving computational cell along direction y\n",
      "time for choose_chunkdivision = 0.00183296 s\n",
      "Working in 2D dimensions.\n",
      "Computational cell is 33 x 12 x 0 with resolution 25\n",
      "     prism, center = (0,0,5e+19)\n",
      "          height 1e+20, axis (0,0,1), 4 vertices:\n",
      "          (-17.5,0.5,0)\n",
      "          (17.5,0.5,0)\n",
      "          (17.5,-0.5,0)\n",
      "          (-17.5,-0.5,0)\n",
      "          dielectric constant epsilon diagonal = (12,12,12)\n",
      "time for set_epsilon = 0.447863 s\n",
      "-----------\n",
      "MPB solved for omega_1(0.519356,0,0) = 0.176186 after 10 iters\n",
      "MPB solved for omega_1(0.424206,0,0) = 0.149878 after 7 iters\n",
      "MPB solved for omega_1(0.424377,0,0) = 0.149925 after 5 iters\n",
      "MPB solved for omega_1(0.424377,0,0) = 0.149925 after 1 iters\n",
      "on time step 2379 (time=47.58), 0.00168153 s/step\n",
      "field decay(t = 50.02): 7.54740931333862e-08 / 7.54740931333862e-08 = 1.0\n",
      "on time step 4877 (time=97.54), 0.00160183 s/step\n",
      "field decay(t = 100.04): 0.001735614282175414 / 0.001735614282175414 = 1.0\n",
      "on time step 7353 (time=147.06), 0.00161556 s/step\n",
      "field decay(t = 150.06): 0.45397875691800166 / 0.45397875691800166 = 1.0\n",
      "on time step 9819 (time=196.38), 0.00162256 s/step\n",
      "field decay(t = 200.08): 1.5637205312092566 / 1.5637205312092566 = 1.0\n",
      "on time step 12317 (time=246.34), 0.0016016 s/step\n",
      "field decay(t = 250.1): 1.2378300815914483 / 1.5637205312092566 = 0.7915929073555166\n",
      "on time step 14830 (time=296.6), 0.0015922 s/step\n",
      "field decay(t = 300.12): 0.031049012038060042 / 1.5637205312092566 = 0.01985585750034836\n",
      "on time step 17280 (time=345.6), 0.00163305 s/step\n",
      "field decay(t = 350.14): 8.860450697395457e-06 / 1.5637205312092566 = 5.66626230234599e-06\n",
      "on time step 19780 (time=395.6), 0.00160038 s/step\n",
      "field decay(t = 400.16): 2.7848020268498908e-11 / 1.5637205312092566 = 1.7808821789251224e-11\n",
      "run 0 finished at t = 400.16 (20008 timesteps)\n",
      "MPB solved for omega_1(0.519356,0,0) = 0.176186 after 10 iters\n",
      "MPB solved for omega_1(0.424206,0,0) = 0.149878 after 7 iters\n",
      "MPB solved for omega_1(0.424377,0,0) = 0.149925 after 5 iters\n",
      "MPB solved for omega_1(0.424377,0,0) = 0.149925 after 1 iters\n",
      "Dominant planewave for band 1: (0.424377,-0.000000,0.000000)\n",
      "-----------\n",
      "Initializing structure...\n",
      "Halving computational cell along direction y\n",
      "time for choose_chunkdivision = 0.00132203 s\n",
      "Working in 2D dimensions.\n",
      "Computational cell is 33 x 12 x 0 with resolution 25\n",
      "     prism, center = (0,0,5e+19)\n",
      "          height 1e+20, axis (0,0,1), 8 vertices:\n",
      "          (-17.5,0.5,0)\n",
      "          (-0.5,0.5,0)\n",
      "          (0.5,1,0)\n",
      "          (17.5,1,0)\n",
      "          (17.5,-1,0)\n",
      "          (0.5,-1,0)\n",
      "          (-0.5,-0.5,0)\n",
      "          (-17.5,-0.5,0)\n",
      "          dielectric constant epsilon diagonal = (12,12,12)\n",
      "time for set_epsilon = 0.664247 s\n",
      "-----------\n",
      "MPB solved for omega_1(0.519356,0,0) = 0.176186 after 10 iters\n",
      "MPB solved for omega_1(0.424206,0,0) = 0.149878 after 7 iters\n",
      "MPB solved for omega_1(0.424377,0,0) = 0.149925 after 5 iters\n",
      "MPB solved for omega_1(0.424377,0,0) = 0.149925 after 1 iters\n",
      "on time step 2337 (time=46.74), 0.00171202 s/step\n",
      "field decay(t = 50.02): 7.55116423679346e-08 / 7.55116423679346e-08 = 1.0\n",
      "on time step 4808 (time=96.16), 0.00161879 s/step\n",
      "field decay(t = 100.04): 0.001737568234822459 / 0.001737568234822459 = 1.0\n",
      "on time step 7266 (time=145.32), 0.00162736 s/step\n",
      "field decay(t = 150.06): 0.4546391533256169 / 0.4546391533256169 = 1.0\n",
      "on time step 9726 (time=194.52), 0.00162628 s/step\n",
      "field decay(t = 200.08): 1.5661544172637174 / 1.5661544172637174 = 1.0\n",
      "on time step 12196 (time=243.92), 0.00161985 s/step\n",
      "field decay(t = 250.1): 1.2398082542830435 / 1.5661544172637174 = 0.7916258068914784\n",
      "on time step 14700 (time=294), 0.00159784 s/step\n",
      "field decay(t = 300.12): 0.0313140484926616 / 1.5661544172637174 = 0.01999422799405148\n",
      "on time step 17203 (time=344.06), 0.00159832 s/step\n",
      "field decay(t = 350.14): 9.723724333805377e-06 / 1.5661544172637174 = 6.208662585643395e-06\n",
      "on time step 19681 (time=393.62), 0.0016146 s/step\n",
      "field decay(t = 400.16): 5.154329670663798e-11 / 1.5661544172637174 = 3.291073736949327e-11\n",
      "run 0 finished at t = 400.16 (20008 timesteps)\n",
      "MPB solved for omega_1(0.519356,0,0) = 0.176186 after 9 iters\n",
      "MPB solved for omega_1(0.424206,0,0) = 0.149878 after 7 iters\n",
      "MPB solved for omega_1(0.424377,0,0) = 0.149925 after 5 iters\n",
      "MPB solved for omega_1(0.424377,0,0) = 0.149925 after 1 iters\n",
      "Dominant planewave for band 1: (0.424377,-0.000000,0.000000)\n",
      "refl:, 1, 0.00033425, 0.00041190\n",
      "-----------\n",
      "Initializing structure...\n",
      "Halving computational cell along direction y\n",
      "time for choose_chunkdivision = 0.00108004 s\n",
      "Working in 2D dimensions.\n",
      "Computational cell is 34 x 12 x 0 with resolution 25\n",
      "     prism, center = (0,0,5e+19)\n",
      "          height 1e+20, axis (0,0,1), 4 vertices:\n",
      "          (-18,0.5,0)\n",
      "          (18,0.5,0)\n",
      "          (18,-0.5,0)\n",
      "          (-18,-0.5,0)\n",
      "          dielectric constant epsilon diagonal = (12,12,12)\n",
      "time for set_epsilon = 0.462233 s\n",
      "-----------\n",
      "MPB solved for omega_1(0.519356,0,0) = 0.176186 after 10 iters\n",
      "MPB solved for omega_1(0.424206,0,0) = 0.149878 after 7 iters\n",
      "MPB solved for omega_1(0.424377,0,0) = 0.149925 after 5 iters\n",
      "MPB solved for omega_1(0.424377,0,0) = 0.149925 after 1 iters\n",
      "on time step 2327 (time=46.54), 0.00171948 s/step\n",
      "field decay(t = 50.02): 7.571674211765607e-08 / 7.571674211765607e-08 = 1.0\n",
      "on time step 4775 (time=95.5), 0.0016345 s/step\n",
      "field decay(t = 100.04): 0.0017406599773709985 / 0.0017406599773709985 = 1.0\n",
      "on time step 7173 (time=143.46), 0.00166846 s/step\n",
      "field decay(t = 150.06): 0.4552933938871408 / 0.4552933938871408 = 1.0\n",
      "on time step 9613 (time=192.26), 0.0016394 s/step\n",
      "field decay(t = 200.08): 1.56824628067331 / 1.56824628067331 = 1.0\n",
      "on time step 12052 (time=241.04), 0.00164018 s/step\n",
      "field decay(t = 250.1): 1.2414144426139568 / 1.56824628067331 = 0.7915940614129616\n",
      "on time step 14512 (time=290.24), 0.00162657 s/step\n",
      "field decay(t = 300.12): 0.031139198594396233 / 1.56824628067331 = 0.019856064049472478\n",
      "on time step 16935 (time=338.7), 0.00165142 s/step\n",
      "field decay(t = 350.14): 8.886312411745595e-06 / 1.56824628067331 = 5.666401075684586e-06\n",
      "on time step 19391 (time=387.82), 0.00162891 s/step\n",
      "field decay(t = 400.16): 2.7609192234474572e-11 / 1.56824628067331 = 1.7605138028843823e-11\n",
      "run 0 finished at t = 400.16 (20008 timesteps)\n",
      "MPB solved for omega_1(0.519356,0,0) = 0.176186 after 10 iters\n",
      "MPB solved for omega_1(0.424206,0,0) = 0.149878 after 7 iters\n",
      "MPB solved for omega_1(0.424377,0,0) = 0.149925 after 5 iters\n",
      "MPB solved for omega_1(0.424377,0,0) = 0.149925 after 1 iters\n",
      "Dominant planewave for band 1: (0.424377,-0.000000,0.000000)\n",
      "-----------\n",
      "Initializing structure...\n",
      "Halving computational cell along direction y\n",
      "time for choose_chunkdivision = 0.00079608 s\n",
      "Working in 2D dimensions.\n",
      "Computational cell is 34 x 12 x 0 with resolution 25\n",
      "     prism, center = (0,0,5e+19)\n",
      "          height 1e+20, axis (0,0,1), 8 vertices:\n",
      "          (-18,0.5,0)\n",
      "          (-1,0.5,0)\n",
      "          (1,1,0)\n",
      "          (18,1,0)\n",
      "          (18,-1,0)\n",
      "          (1,-1,0)\n",
      "          (-1,-0.5,0)\n",
      "          (-18,-0.5,0)\n",
      "          dielectric constant epsilon diagonal = (12,12,12)\n",
      "time for set_epsilon = 0.693091 s\n",
      "-----------\n",
      "MPB solved for omega_1(0.519356,0,0) = 0.176186 after 10 iters\n",
      "MPB solved for omega_1(0.424206,0,0) = 0.149878 after 7 iters\n",
      "MPB solved for omega_1(0.424377,0,0) = 0.149925 after 5 iters\n",
      "MPB solved for omega_1(0.424377,0,0) = 0.149925 after 1 iters\n",
      "on time step 2308 (time=46.16), 0.00173349 s/step\n",
      "field decay(t = 50.02): 7.571396797724319e-08 / 7.571396797724319e-08 = 1.0\n",
      "on time step 4692 (time=93.84), 0.00167819 s/step\n",
      "field decay(t = 100.04): 0.0017395257849605922 / 0.0017395257849605922 = 1.0\n",
      "on time step 7113 (time=142.26), 0.00165247 s/step\n",
      "field decay(t = 150.06): 0.45384932485125673 / 0.45384932485125673 = 1.0\n",
      "on time step 9546 (time=190.92), 0.00164416 s/step\n",
      "field decay(t = 200.08): 1.5552337783783405 / 1.5552337783783405 = 1.0\n",
      "on time step 11961 (time=239.22), 0.00165646 s/step\n",
      "field decay(t = 250.1): 1.2260556872108188 / 1.5552337783783405 = 0.7883417298775754\n",
      "on time step 14416 (time=288.32), 0.00162956 s/step\n",
      "field decay(t = 300.12): 0.030083252819861385 / 1.5552337783783405 = 0.019343235234531443\n",
      "on time step 16863 (time=337.26), 0.00163533 s/step\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "field decay(t = 350.14): 8.582297003142968e-06 / 1.5552337783783405 = 5.518332434942239e-06\n",
      "on time step 19312 (time=386.24), 0.00163389 s/step\n",
      "field decay(t = 400.16): 5.083050063922431e-11 / 1.5552337783783405 = 3.268351121606029e-11\n",
      "run 0 finished at t = 400.16 (20008 timesteps)\n",
      "MPB solved for omega_1(0.519356,0,0) = 0.176186 after 10 iters\n",
      "MPB solved for omega_1(0.424206,0,0) = 0.149878 after 7 iters\n",
      "MPB solved for omega_1(0.424377,0,0) = 0.149925 after 5 iters\n",
      "MPB solved for omega_1(0.424377,0,0) = 0.149925 after 1 iters\n",
      "Dominant planewave for band 1: (0.424377,-0.000000,0.000000)\n",
      "refl:, 2, 0.00007150, 0.00008424\n",
      "-----------\n",
      "Initializing structure...\n",
      "Halving computational cell along direction y\n",
      "time for choose_chunkdivision = 0.00330091 s\n",
      "Working in 2D dimensions.\n",
      "Computational cell is 36 x 12 x 0 with resolution 25\n",
      "     prism, center = (0,0,5e+19)\n",
      "          height 1e+20, axis (0,0,1), 4 vertices:\n",
      "          (-19,0.5,0)\n",
      "          (19,0.5,0)\n",
      "          (19,-0.5,0)\n",
      "          (-19,-0.5,0)\n",
      "          dielectric constant epsilon diagonal = (12,12,12)\n",
      "time for set_epsilon = 0.496261 s\n",
      "-----------\n",
      "MPB solved for omega_1(0.519356,0,0) = 0.176186 after 10 iters\n",
      "MPB solved for omega_1(0.424206,0,0) = 0.149878 after 7 iters\n",
      "MPB solved for omega_1(0.424377,0,0) = 0.149925 after 5 iters\n",
      "MPB solved for omega_1(0.424377,0,0) = 0.149925 after 1 iters\n",
      "on time step 2138 (time=42.76), 0.00187101 s/step\n",
      "field decay(t = 50.02): 7.571674212930823e-08 / 7.571674212930823e-08 = 1.0\n",
      "on time step 4454 (time=89.08), 0.00172765 s/step\n",
      "field decay(t = 100.04): 0.0017406599772782168 / 0.0017406599772782168 = 1.0\n",
      "on time step 6777 (time=135.54), 0.0017222 s/step\n",
      "field decay(t = 150.06): 0.45529339380861855 / 0.45529339380861855 = 1.0\n",
      "on time step 9069 (time=181.38), 0.0017456 s/step\n",
      "field decay(t = 200.08): 1.568246280713512 / 1.568246280713512 = 1.0\n",
      "on time step 11341 (time=226.82), 0.00176058 s/step\n",
      "field decay(t = 250.1): 1.2414144439515642 / 1.568246280713512 = 0.791594062245601\n",
      "on time step 13493 (time=269.86), 0.00185906 s/step\n",
      "field decay(t = 300.12): 0.031139203524192197 / 1.568246280713512 = 0.01985606719247225\n",
      "on time step 15734 (time=314.68), 0.00178549 s/step\n",
      "field decay(t = 350.14): 8.886463070035761e-06 / 1.568246280713512 = 5.666497143543454e-06\n",
      "on time step 18069 (time=361.38), 0.00171313 s/step\n",
      "field decay(t = 400.16): 2.7650862223635545e-11 / 1.568246280713512 = 1.7631709103148714e-11\n",
      "run 0 finished at t = 400.16 (20008 timesteps)\n",
      "MPB solved for omega_1(0.519356,0,0) = 0.176186 after 10 iters\n",
      "MPB solved for omega_1(0.424206,0,0) = 0.149878 after 7 iters\n",
      "MPB solved for omega_1(0.424377,0,0) = 0.149925 after 5 iters\n",
      "MPB solved for omega_1(0.424377,0,0) = 0.149925 after 1 iters\n",
      "Dominant planewave for band 1: (0.424377,-0.000000,0.000000)\n",
      "-----------\n",
      "Initializing structure...\n",
      "Halving computational cell along direction y\n",
      "time for choose_chunkdivision = 0.00128293 s\n",
      "Working in 2D dimensions.\n",
      "Computational cell is 36 x 12 x 0 with resolution 25\n",
      "     prism, center = (0,0,5e+19)\n",
      "          height 1e+20, axis (0,0,1), 8 vertices:\n",
      "          (-19,0.5,0)\n",
      "          (-2,0.5,0)\n",
      "          (2,1,0)\n",
      "          (19,1,0)\n",
      "          (19,-1,0)\n",
      "          (2,-1,0)\n",
      "          (-2,-0.5,0)\n",
      "          (-19,-0.5,0)\n",
      "          dielectric constant epsilon diagonal = (12,12,12)\n",
      "time for set_epsilon = 0.755732 s\n",
      "-----------\n",
      "MPB solved for omega_1(0.519356,0,0) = 0.176186 after 10 iters\n",
      "MPB solved for omega_1(0.424206,0,0) = 0.149878 after 7 iters\n",
      "MPB solved for omega_1(0.424377,0,0) = 0.149925 after 5 iters\n",
      "MPB solved for omega_1(0.424377,0,0) = 0.149925 after 1 iters\n",
      "on time step 1883 (time=37.66), 0.00212453 s/step\n",
      "field decay(t = 50.02): 7.569671091769381e-08 / 7.569671091769381e-08 = 1.0\n",
      "on time step 4139 (time=82.78), 0.00177353 s/step\n",
      "field decay(t = 100.04): 0.0017391263700697627 / 0.0017391263700697627 = 1.0\n",
      "on time step 6309 (time=126.18), 0.00184352 s/step\n",
      "field decay(t = 150.06): 0.453841743379235 / 0.453841743379235 = 1.0\n",
      "on time step 8560 (time=171.2), 0.0017771 s/step\n",
      "field decay(t = 200.08): 1.5555871736720326 / 1.5555871736720326 = 1.0\n",
      "on time step 10769 (time=215.38), 0.0018108 s/step\n",
      "field decay(t = 250.1): 1.2260941054634609 / 1.5555871736720326 = 0.7881873328700771\n",
      "on time step 13056 (time=261.12), 0.00174983 s/step\n",
      "field decay(t = 300.12): 0.02968036484241766 / 1.5555871736720326 = 0.01907984672588669\n",
      "on time step 15299 (time=305.98), 0.00178368 s/step\n",
      "field decay(t = 350.14): 7.2347918961150245e-06 / 1.5555871736720326 = 4.650843114781525e-06\n",
      "on time step 17653 (time=353.06), 0.00169945 s/step\n",
      "on time step 19969 (time=399.38), 0.00172778 s/step\n",
      "field decay(t = 400.16): 8.407569561060486e-11 / 1.5555871736720326 = 5.4047562896870926e-11\n",
      "run 0 finished at t = 400.16 (20008 timesteps)\n",
      "MPB solved for omega_1(0.519356,0,0) = 0.176186 after 9 iters\n",
      "MPB solved for omega_1(0.424206,0,0) = 0.149878 after 7 iters\n",
      "MPB solved for omega_1(0.424377,0,0) = 0.149925 after 5 iters\n",
      "MPB solved for omega_1(0.424377,0,0) = 0.149925 after 1 iters\n",
      "Dominant planewave for band 1: (0.424377,-0.000000,0.000000)\n",
      "refl:, 4, 0.00004024, 0.00004337\n",
      "-----------\n",
      "Initializing structure...\n",
      "Halving computational cell along direction y\n",
      "time for choose_chunkdivision = 0.00212097 s\n",
      "Working in 2D dimensions.\n",
      "Computational cell is 40 x 12 x 0 with resolution 25\n",
      "     prism, center = (0,0,5e+19)\n",
      "          height 1e+20, axis (0,0,1), 4 vertices:\n",
      "          (-21,0.5,0)\n",
      "          (21,0.5,0)\n",
      "          (21,-0.5,0)\n",
      "          (-21,-0.5,0)\n",
      "          dielectric constant epsilon diagonal = (12,12,12)\n",
      "time for set_epsilon = 0.565803 s\n",
      "-----------\n",
      "MPB solved for omega_1(0.519356,0,0) = 0.176186 after 10 iters\n",
      "MPB solved for omega_1(0.424206,0,0) = 0.149878 after 7 iters\n",
      "MPB solved for omega_1(0.424377,0,0) = 0.149925 after 5 iters\n",
      "MPB solved for omega_1(0.424377,0,0) = 0.149925 after 1 iters\n",
      "on time step 1905 (time=38.1), 0.00210044 s/step\n",
      "field decay(t = 50.02): 7.571674211765524e-08 / 7.571674211765524e-08 = 1.0\n",
      "on time step 4047 (time=80.94), 0.00186782 s/step\n",
      "field decay(t = 100.04): 0.0017406599773711756 / 0.0017406599773711756 = 1.0\n",
      "on time step 6216 (time=124.32), 0.0018447 s/step\n",
      "field decay(t = 150.06): 0.4552933938912802 / 0.4552933938912802 = 1.0\n",
      "on time step 8357 (time=167.14), 0.00186832 s/step\n",
      "field decay(t = 200.08): 1.5682462811448037 / 1.5682462811448037 = 1.0\n",
      "on time step 10518 (time=210.36), 0.00185132 s/step\n",
      "field decay(t = 250.1): 1.2414144444964543 / 1.5682462811448037 = 0.7915940623753525\n",
      "on time step 12633 (time=252.66), 0.00189134 s/step\n",
      "on time step 14831 (time=296.62), 0.00182053 s/step\n",
      "field decay(t = 300.12): 0.03113920465258198 / 1.5682462811448037 = 0.01985606790653486\n",
      "on time step 17006 (time=340.12), 0.00183974 s/step\n",
      "field decay(t = 350.14): 8.886516913937694e-06 / 1.5682462811448037 = 5.666531475815538e-06\n",
      "on time step 19110 (time=382.2), 0.0019017 s/step\n",
      "field decay(t = 400.16): 2.7625870947574233e-11 / 1.5682462811448037 = 1.7615773287476016e-11\n",
      "run 0 finished at t = 400.16 (20008 timesteps)\n",
      "MPB solved for omega_1(0.519356,0,0) = 0.176186 after 10 iters\n",
      "MPB solved for omega_1(0.424206,0,0) = 0.149878 after 7 iters\n",
      "MPB solved for omega_1(0.424377,0,0) = 0.149925 after 5 iters\n",
      "MPB solved for omega_1(0.424377,0,0) = 0.149925 after 1 iters\n",
      "Dominant planewave for band 1: (0.424377,-0.000000,0.000000)\n",
      "-----------\n",
      "Initializing structure...\n",
      "Halving computational cell along direction y\n",
      "time for choose_chunkdivision = 0.000883102 s\n",
      "Working in 2D dimensions.\n",
      "Computational cell is 40 x 12 x 0 with resolution 25\n",
      "     prism, center = (0,0,5e+19)\n",
      "          height 1e+20, axis (0,0,1), 8 vertices:\n",
      "          (-21,0.5,0)\n",
      "          (-4,0.5,0)\n",
      "          (4,1,0)\n",
      "          (21,1,0)\n",
      "          (21,-1,0)\n",
      "          (4,-1,0)\n",
      "          (-4,-0.5,0)\n",
      "          (-21,-0.5,0)\n",
      "          dielectric constant epsilon diagonal = (12,12,12)\n",
      "time for set_epsilon = 0.863971 s\n",
      "-----------\n",
      "MPB solved for omega_1(0.519356,0,0) = 0.176186 after 10 iters\n",
      "MPB solved for omega_1(0.424206,0,0) = 0.149878 after 7 iters\n",
      "MPB solved for omega_1(0.424377,0,0) = 0.149925 after 5 iters\n",
      "MPB solved for omega_1(0.424377,0,0) = 0.149925 after 1 iters\n",
      "on time step 1966 (time=39.32), 0.00203556 s/step\n",
      "field decay(t = 50.02): 7.568972576123606e-08 / 7.568972576123606e-08 = 1.0\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "on time step 4042 (time=80.84), 0.00192733 s/step\n",
      "field decay(t = 100.04): 0.0017392532865220022 / 0.0017392532865220022 = 1.0\n",
      "on time step 6101 (time=122.02), 0.00194315 s/step\n",
      "field decay(t = 150.06): 0.4541781140774447 / 0.4541781140774447 = 1.0\n",
      "on time step 8223 (time=164.46), 0.00188516 s/step\n",
      "field decay(t = 200.08): 1.5597082712382018 / 1.5597082712382018 = 1.0\n",
      "on time step 10355 (time=207.1), 0.00187692 s/step\n",
      "on time step 12479 (time=249.58), 0.00188403 s/step\n",
      "field decay(t = 250.1): 1.231655150453248 / 1.5597082712382018 = 0.7896702051053925\n",
      "on time step 14552 (time=291.04), 0.00193036 s/step\n",
      "field decay(t = 300.12): 0.030221199579030786 / 1.5597082712382018 = 0.019376187288562084\n",
      "on time step 16622 (time=332.44), 0.00193299 s/step\n",
      "field decay(t = 350.14): 6.594515383229233e-06 / 1.5597082712382018 = 4.228044118785151e-06\n",
      "on time step 18688 (time=373.76), 0.00193665 s/step\n",
      "field decay(t = 400.16): 3.0985772121881132e-09 / 1.5597082712382018 = 1.986638956353199e-09\n",
      "on time step 20781 (time=415.62), 0.00191162 s/step\n",
      "field decay(t = 450.18): 2.4580489315863303e-13 / 1.5597082712382018 = 1.5759671067429584e-13\n",
      "run 0 finished at t = 450.18 (22509 timesteps)\n",
      "MPB solved for omega_1(0.519356,0,0) = 0.176186 after 10 iters\n",
      "MPB solved for omega_1(0.424206,0,0) = 0.149878 after 7 iters\n",
      "MPB solved for omega_1(0.424377,0,0) = 0.149925 after 5 iters\n",
      "MPB solved for omega_1(0.424377,0,0) = 0.149925 after 1 iters\n",
      "Dominant planewave for band 1: (0.424377,-0.000000,0.000000)\n",
      "refl:, 8, 0.00001847, 0.00001902\n"
     ]
    }
   ],
   "source": [
    "import meep as mp\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "resolution = 25   # pixels/μm\n",
    "\n",
    "w1 = 1.0          # width of waveguide 1\n",
    "w2 = 2.0          # width of waveguide 2\n",
    "Lw = 10.0         # length of waveguides 1 and 2\n",
    "\n",
    "# lengths of waveguide taper\n",
    "Lts = [2**m for m in range(4)]\n",
    "\n",
    "dair = 3.0        # length of air region\n",
    "dpml_x = 6.0      # length of PML in x direction\n",
    "dpml_y = 2.0      # length of PML in y direction\n",
    "\n",
    "sy = dpml_y+dair+w2+dair+dpml_y\n",
    "\n",
    "Si = mp.Medium(epsilon=12.0)\n",
    "\n",
    "boundary_layers = [mp.PML(dpml_x,direction=mp.X),\n",
    "                   mp.PML(dpml_y,direction=mp.Y)]\n",
    "\n",
    "lcen = 6.67       # mode wavelength\n",
    "fcen = 1/lcen     # mode frequency\n",
    "\n",
    "symmetries = [mp.Mirror(mp.Y)]\n",
    "\n",
    "R_coeffs = []\n",
    "R_flux = []\n",
    "\n",
    "for Lt in Lts:\n",
    "    sx = dpml_x+Lw+Lt+Lw+dpml_x\n",
    "    cell_size = mp.Vector3(sx,sy,0)\n",
    "\n",
    "    src_pt = mp.Vector3(-0.5*sx+dpml_x+0.2*Lw)\n",
    "    sources = [mp.EigenModeSource(src=mp.GaussianSource(fcen,fwidth=0.2*fcen),\n",
    "                                  center=src_pt,\n",
    "                                  size=mp.Vector3(y=sy-2*dpml_y),\n",
    "                                  eig_match_freq=True,\n",
    "                                  eig_parity=mp.ODD_Z+mp.EVEN_Y)]\n",
    "\n",
    "    # straight waveguide\n",
    "    vertices = [mp.Vector3(-0.5*sx-1,0.5*w1),\n",
    "                mp.Vector3(0.5*sx+1,0.5*w1),\n",
    "                mp.Vector3(0.5*sx+1,-0.5*w1),\n",
    "                mp.Vector3(-0.5*sx-1,-0.5*w1)]\n",
    "\n",
    "    sim = mp.Simulation(resolution=resolution,\n",
    "                        cell_size=cell_size,\n",
    "                        boundary_layers=boundary_layers,\n",
    "                        geometry=[mp.Prism(vertices,height=mp.inf,material=Si)],\n",
    "                        sources=sources,\n",
    "                        symmetries=symmetries)\n",
    "\n",
    "    mon_pt = mp.Vector3(-0.5*sx+dpml_x+0.7*Lw)\n",
    "    flux = sim.add_flux(fcen,0,1,mp.FluxRegion(center=mon_pt,size=mp.Vector3(y=sy-2*dpml_y)))\n",
    "\n",
    "    sim.run(until_after_sources=mp.stop_when_fields_decayed(50,mp.Ez,mon_pt,1e-9))\n",
    "\n",
    "    res = sim.get_eigenmode_coefficients(flux,[1],eig_parity=mp.ODD_Z+mp.EVEN_Y)\n",
    "    incident_coeffs = res.alpha\n",
    "    incident_flux = mp.get_fluxes(flux)\n",
    "    incident_flux_data = sim.get_flux_data(flux)\n",
    "\n",
    "    sim.reset_meep()\n",
    "\n",
    "    # linear taper\n",
    "    vertices = [mp.Vector3(-0.5*sx-1,0.5*w1),\n",
    "                mp.Vector3(-0.5*Lt,0.5*w1),\n",
    "                mp.Vector3(0.5*Lt,0.5*w2),\n",
    "                mp.Vector3(0.5*sx+1,0.5*w2),\n",
    "                mp.Vector3(0.5*sx+1,-0.5*w2),\n",
    "                mp.Vector3(0.5*Lt,-0.5*w2),\n",
    "                mp.Vector3(-0.5*Lt,-0.5*w1),\n",
    "                mp.Vector3(-0.5*sx-1,-0.5*w1)]\n",
    "\n",
    "    sim = mp.Simulation(resolution=resolution,\n",
    "                        cell_size=cell_size,\n",
    "                        boundary_layers=boundary_layers,\n",
    "                        geometry=[mp.Prism(vertices,height=mp.inf,material=Si)],\n",
    "                        sources=sources,\n",
    "                        symmetries=symmetries)\n",
    "\n",
    "    flux = sim.add_flux(fcen,0,1,mp.FluxRegion(center=mon_pt,size=mp.Vector3(y=sy-2*dpml_y)))\n",
    "    sim.load_minus_flux_data(flux,incident_flux_data)\n",
    "\n",
    "    sim.run(until_after_sources=mp.stop_when_fields_decayed(50,mp.Ez,mon_pt,1e-9))\n",
    "\n",
    "    res2 = sim.get_eigenmode_coefficients(flux,[1],eig_parity=mp.ODD_Z+mp.EVEN_Y)\n",
    "    taper_coeffs = res2.alpha\n",
    "    taper_flux = mp.get_fluxes(flux)\n",
    "\n",
    "    R_coeffs.append(abs(taper_coeffs[0,0,1])**2/abs(incident_coeffs[0,0,0])**2)\n",
    "    R_flux.append(-taper_flux[0]/incident_flux[0])\n",
    "    print(\"refl:, {}, {:.8f}, {:.8f}\".format(Lt,R_coeffs[-1],R_flux[-1]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Note that the reflectance is computed for five different geometrically-scaled taper lengths: 1, 2, 4, 8, and 16 μm. A quadratic scaling of the reflectance with the taper length appears as a straight line on a log-log plot. The results are plotted below."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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bbfddv35jL7vnnqPYmJirt8uUaJEuo7NqMT5RLy56kxiL5nz588zcuRIpzHBwcHUqFEjxTaSvm6HDh3y+OvoCiqKiIjkMCVKlGD06NH069eP9957j8mTJ3Pq1KlkcevXr6d58+bUrl2bIUOG8Mgjj7jlDyCR7OCvv/7Kkr8IZsTx48cpXry4y9vdunXr9Z9JnTt3TvHnTkBAAA899BArV650eQ6puXz5MseOHeP8+fPEx8cDJPaiBWDnzp1/Ky6443oSV3xwZ96usmPHjutL13bv3p0CBQq4/Bw3Su31OXToEFu3bgXg6aefTrWdSpUqUaxYMU6cOMHGjRvT/Qe3O87l6WtL7XxJ/70cPHjwb384Z+R99+R79Oeff16/feOwJ3c6dOgQ27ZtA7xbFJkzZ47TSXrTo0iRItdvJ309sxL9disikkMVKVKEYcOGERUVxbhx41L8g+6XX37hscceo3r16ixYsIC4uDgPZyoiOUnSeTVuNsa/bt267k4HcCxrPnr0aKpXr46/vz9BQUGEhoZStWpVqlatSs2aNa/Hnjhx4m/HuuN6qlWr5va8XWX79u3Xbzds2NAt57hRaq/PL7/8cv12+/btk63KceOW+LocPXo03Xm441yevraKFSum+FzSP4bPnTv3t+cy8r578j06efLk9dueLIok9hK58847r89Rk1Ulfd2yao9JFUVERHK4ggUL0q9fPyIjI3nvvfcICAhwGhcWFkaHDh2oVKkSs2bN4sqVKx7OVERygqQ9127W++aOO+5wdzpERkZStWpVBg0axK+//nrTwvClS5f+dt8d15OWP94ymrerJC223HXXXW45x41Se32OHz9+S21evHgx3ce441yevrbUlolN2uvpxn9fGXnfPfke5c2b9/ptd/0fcGbFihUAtGzZMssPUU76uuXLl8+Lmdw6DZ8RERHA8UH2r3/9ixdeeIH58+czevRoDhw4kCwuPDycbt268dZbb9G/f3+ee+65LPshKCKZT9IhHTf7YyFprLt07NiRgwcPYoyha9eutGvXjkqVKlG8ePHrcyTEx8dfX7HhxpzccT1pWR0io3m7g6f++Evt9Un6x/snn3yS5l43t9KLwB3nyizXlh7pfd89eR1JhwCePHmSggULpruN9Lp06RJr164FvDt0xlWS9rZxx5BKT1BRRERE/iZ37tx069aNzp07s2jRIkaNGsWuXbuSxf3xxx/861//YsSIEbz22mv07NnTI2PFRTKjokWL3vK3m1lV0aJF3dJu0i75x44do3z58inGpvaaJ36LnTh/RkouXLiQ4nO///47GzZsAGDgwIEpTkTobF6mRK66nvRwRd6uknTC18OHD1OhQgW3nzM1Sf/dGmOoUqVKtjiXN86Xmoy87568jqR/xJ86depvSxu7yzfffMOlS5fImzfvLU3em9kk/TmiooiIiGQrfn5+dOjQgXbt2rF8+XJGjhx5feKzpI4ePUq/fv0YPXo0ffr0oXfv3hQuXNgLGYt4j4+PT5b9ZTCzqVq16vXbW7ZsoUGDBinGbtmyJcXnEr/xPX36dKrn27t3b4rPJS0It2vXLsW4pHMg3MhV15MersgbXNOz45577rl++4cffqBJkyYZbjMjks6j8vXXX9O+fftscS5vnC81GXnfPXkdSf9/7tu3L9VVVlwlcejMgw8+iL+/v1vO4ckhOfv27QPA39+f0qVLe+y8rqQ5RUREJFU+Pj60adOGLVu2sGrVKh544AGncSdPnuTf//43d999N4MGDcqyM5CLiHfVqlXrejf4+fPnpzis49ChQ3z99dcpthMSEgI4JoBMqfBx5coVlixZkmIb165du347tfkKpk2bluJzrrqe9HBF3vD3+RYuX758S7lUr16dwMBAAD766COnS8F7UtmyZalcuTIACxcu5I8//sgW5/LG+VKTkffdk9dRu3bt60OAXVWUTI219voKU+4cOuOK/7tplfi61atXDz+/rNnnQkURERFJE2MMzZs3Z/369axbt45mzZo5jTt37hyjR48mKCiIV1999fqSfCIiaZEnTx66du0KOJb1HD9+fLKYa9eu0b1791QnfG7UqNH12xMnTkz2vLWWV155hcOHD6fYRrly5a7fnjt3rtOYqVOnsmzZshTbcNX1pIcr8oa/T5DpbI6ptPDx8aFfv34AxMTE0KlTpxSvMz4+PtX3w1WGDBkCQGxsLI8//niqRfzLly8zZcoUYmNjM/25vHG+lGT0fffUdeTOnfv6qk+bN29O9/HptXXr1uvX2qpVK7edxxX/d9Pi8uXL/PrrrwCp9oLL7LJmKUdERLzGGEOjRo1o1KgRmzdvZuTIkXz55ZfJ4i5dusQ777zDlClT6Nq1KwMGDLj+za2ISGr+/e9/s2jRImJiYhgwYAA7duygU6dOlChRgn379vH222+zZcsW6tSpk+K3uzVr1qRevXr8/PPPfPjhh1y5coXOnTtz2223ER4ezrRp01i3bh333XcfGzduTLGNKlWqEBYWxtSpUzl9+jTPPPMMd911F9HR0Xz88ccsXryYBx54gB9//NGt15Mersq7Zs2a5M2bl9jYWIYOHYqfnx/BwcHX52spVapUmiba7tWrFytWrGDNmjV88cUXVK1alZdeeonatWuTP39+jh49ys8//8yCBQvo0KEDb775ZoZfg9S0b9+e1atXM3fuXLZu3UrlypXp0aMHjRo1onjx4ly4cIEDBw6wfv16li5dysmTJ+nUqVOmP5c3zpeajLzvnryOli1b8v3337N582bOnTuX6mSrGzZsYP/+/dfvJ11lZ//+/cyZM+dv8V26dPnb/cSleGvUqJHian832rFjR7J2nalfvz5ly5YFXPd/92Z++OEHrl69CjhexyzLWqtNW7o3IACwgI2OjrYikrPt3LnTtm3b1hpjbOLPhhs3X19f26lTJ7tnzx5vpyuSLvv27bO7d++2+/bt83YqOUpYWJi98847U/yZ0rVrVzt79uzr9w8ePJisjT179tgSJUqk2Ebfvn1v2sb27dvt7bffnmIbVatWtYcPH75+f9iwYW65nmHDhl1/Li1clXf//v1TbOO77767Hnez1/HChQv2ySefTLGtm+VxM+l9fa5du2b79+9vfX19b5qTv7+/vXjxYrI20ppzRs/l6WtL6/m+++47p/8WksrI++6K9ygtYmJirp9j7ty5qcZ27tz5prkk3W50zz33WMAOHTo01fMkfW3Tus2ePftvbaT1/25GdOnSxQK2QoUKt3T8rXy+RkdHJ72WAOuCv201fEZERDKsWrVqLFy4kD179tClSxenY0rj4uKYN28elStX5umnn2bHjh1eyFREsorQ0FB27dpF//79KVeuHHny5KFYsWI0adKETz/9lFmzZt20jYoVK7Jt2zZefPFFgoKCyJ07N8WLF6d58+asXLnS6bCaG9WoUYMdO3bQs2dPgoKCyJUrF0WKFKFu3bpMmDCBzZs3/62rujuvJz1clfeYMWP48MMPadCgAUWKFEnTcsDO5M+fn88//5y1a9fSsWNHQkJCyJcvHwULFqRixYo8/vjjfPrpp9eHXLibr68vY8eOZffu3bz22mvUrFmT22+/HV9fXwoWLEhoaCjPPPMMc+fO5ciRIxn6Vt2T5/LG+VKTkffdU9dRqlQpHn30UcCxBLC7HDp0iO3btwOeWYrXVf93UxIbG8sXX3wBwEsvveTStj3NWMe3/iLpYowJAKIBoqOj09z9S0RyhsjISMaNG8fMmTNTHSPfsmVLBg8ezH333efB7ETSJzw8nGvXruHn5/e3uRrE++bMmXN9vo6DBw8SHBzs3YREJEv6+eefue+++/D19WX//v1u+Vkyffp0evbsyZ133snhw4c9ukKMO3z88cd07NiRIkWKEBkZmeqwo5TcyudrTEzM9Ul8gUBrbUy6T3wD9RQRERGXCw4OZsqUKRw8eJC+ffuSP39+p3ErV67k/vvvp2nTpnz33XeoUC8iIiKeVq9ePR5++GHi4uIYPXq0W86ROJ9Iy5Yts3xBJD4+nlGjRgHw+uuv31JBJDNRUURERNymZMmSTJw4kaioKAYPHkyhQoWcxq1du5YHH3yQBx54gP/7v/9TcUREREQ8auzYsfj6+jJ79my3LAPcoEEDhg0bRq9evVzetqd9/vnn7Nmzh8DAQPr06ePtdDJMRREREXG7YsWKMWLECKKiohgxYgRFixZ1Grdx40ZatmxJrVq1WLJkCfHx8R7OVERERHKiqlWrMmfOHAYNGuSWokj//v158803qVmzpsvb9rS4uDiGDRvGxx9/7NY5aTxFS/KKiIjHFC5cmMGDB9OnTx+mT5/OhAkTOHLkSLK47du38+STT1KpUiUGDRpEu3btnE7eKiIiIuIqzz77rLdTyBI6dOjg7RRcSj1FRETE4/z9/enbty8RERFMnTqVoKAgp3F79uyhY8eOVKhQgRkzZnD58mUPZyoiIiIi2ZmKIiIi4jV58+alZ8+ehIeHM3v2bMqXL+80LiIigh49elCmTBkmT57MxYsXPZypiGRGXbp0wVqLtVYrz4iIyC1RUURERLwuV65cdOnShd27d7Nw4UKqVavmNO7QoUP06dOH4OBgxowZw9mzZz2cqYiIiIhkJyqKiIhIpuHr60vbtm3ZsWMHX375JXXr1nUa9+effzJw4ECCgoIYNmwYJ0+e9HCmIiIiIpIdqCgiIiKZjjGGRx55hJ9//pk1a9bQqFEjp3GnT59m+PDhBAUF0b9/f44ePerhTEVEREQkK1NRREREMi1jDP/4xz9Yt24d69evp3nz5k7jzp8/z/jx4wkJCaF3795uWUpPRERERLIfFUVERCRLqF+/PqtWreKXX36hTZs2TmNiY2N5//33KVu2LM8//zz79+/3cJYiIiIikpWoKCIiIllKrVq1WLp0Kb/99hsdOnTAxyf5R9nVq1eZOXMmFSpU4JlnnmHXrl1eyFREREREMjsVRUREJEuqUqUKn3zyCXv37qVbt27kypUrWUx8fDyffvopVapU4fHHH2fr1q1eyFREREREMisVRUREJEsrW7YsH330EQcOHKB3797kzZvXadwXX3xB7dq1efjhh9mwYYOHsxQRERGRpKy13k4BUFFERESyicDAQN59910iIyPp378/BQoUcBr31Vdf0aBBAxo3bsyaNWsyzQeyZF6+vr4AXLt2jbi4OC9nIyIikvXFxcVd/0xN/Jz1FhVFREQkW7njjjsYO3YsUVFRDBs2jMKFCzuN+/7773nooYeoV68eX375pYojkqL8+fNfv3369GkvZiIiIpI9JP08Tfo56w0qioiISLZUpEgR3nzzTaKiohgzZgzFixd3Grd582YeffRRqlevzmeffaaeAJJM0sLa8ePHOX78OLGxsSqkiYiIpIO1ltjY2OufpYluv/12L2YFRh/ociuMMQFANEB0dDQBAQFezkhEJHUXL17ko48+Yty4cRw6dCjFuPLlyzNw4ECeeeYZp5O3Ss50+PBhzpw587fHjDFe7/IrIiKSVcTFxSX7QuG2226jZMmSaW4jJiaGwMDAxLuB1tqYjOaloojcEhVFRCSrunz5MvPmzWPMmDFERESkGBcUFMSAAQPo2rVripO3Ss5hreWvv/7izz//9HYqIiIi2ULx4sUpWrQoxpg0H6OiiGQaKoqISFZ37do1Fi5cyKhRo9izZ0+KcXfddRevvfYaPXr0SHHyVsk5rly5wvnz57lw4QJXrlwhPj7e2ymJiIhkCT4+PuTOnRt/f38KFChA7ty5092GiiKSaagoIiLZRXx8PF988QUjR45k+/btKcYVLVqUV199lV69eqU4eauIiIiIuI87iiKaaFVERHI0Hx8fnnjiCbZu3crKlSu5//77ncb99ddfDBkyhKCgIIYMGcKJEyc8nKmIiIiIuJqKIiIiIjgmzWzRogUbNmzgu+++o2nTpk7jzp49y8iRIwkKCqJv374cPnzYw5mKiIiIiKuoKCIiIpKEMYbGjRvzzTffsHHjRlq1auU07uLFi0yaNImQkBBefPFFIiMjPZuoiIiIiGSYiiIiIiIpqFevHitWrGD79u089dRTTmdHv3LlCtOmTaNs2bJ06dKFvXv3eiFTEREREbkVKoqIiIjcRI0aNVi0aBG7d++mU6dO+Pr6JouJi4tj7ty5VKpUibZt27Jz504vZCoiIiIi6aGiiIiISBpVrFiRuXPnEh4eTo8ePZwuJWetZdGiRdSoUYPWrVuzadMmL2QqIiIiImmhooiIiEg6hYSEMG3aNCIiIujTpw/58uVzGrdixQrq1atHs2bN+P7777HWejhTEREREUmNiiIiIiK3qFSpUkyaNImoqCgGDRpEwYIFncZ98803NG7cmAYNGrBq1SoVR0REREQyCRVFREREMqh48eKMHDmSqKgohg8fTpEiRZzG/fjjj7Ro0YLatWuzdOlS4uPjPZypiIiIiCSlooiIiIiL3H777QwdOpSoqCgmTJjAnXfe6TRu27ZtPPHEE1StWpVPPvmEa9eueThTEREREQEVRURERFyuQIECvPbaaxw8eJAPPviAu+++22nc7t27efbZZ6lYsSIfffQRV65c8XCmIiIiIjmbiiIiIiJukjdvXl566SXCw8OZNWsW5cqVcxp34MABunfvTpkyZXjvvfe4dOmShzMVERERyZlUFBEREXGz3Llz07VrV/bs2cOCBQuoUqWK07iYmBhefvllQkJCGDduHOfOnfNwpiIiIiI5i4oi2YAxprAx5l1jzEZjzFFjzGVjzCFjzFpjzBPGGOPtHEVEBHx9fWnXrh07d+5k2bJl1K5d22ncsWPHGDBgAEFBQbz11lucPHnSw5mKiIiI5AwqimQPxYDngAvAMmAisAoIBRYD072XmoiI3MjHx4dHH32UzZs3s3r1aho0aOA07tSpU7z55psEBQXxxhtvcOzYMQ9nKiIiIpK9GWutt3OQDDLG+OJ4L6/d8HhB4GegMlDFWrvLhecMAKIBoqOjCQgIcFXTIiI50vr16xk5ciSrV69OMSZv3ry88MIL9OvXTz93RUREJMeJiYkhMDAw8W6gtTYmo22qp0g2YK2Nu7EgkvD4OSDxt+uyns1KRETSo0GDBnz11Vds3ryZxx57zGlMbGws7777LqVLl6Z79+4cOHDAw1mKiIiIZC85vihijClhjGlljBlujFlljDlhjLEJ25x0tnW3MWaCMWaPMeaCMeakMWazMeZ1Y0x+N11CavnkBR4ELLDb0+cXEZH0q1OnDl988QW//vor7du3x8cn+Uf11atX+eijjyhfvjwdO3Zk9279iBcRERG5FTl++IwxJrUXYK61tksa22kJfALclkLIXqCFtTYifRmmnTGmMNAHR7GrBNACCATesta+6eJzafiMiIgHhIeHM2bMGObNm8e1a8k6BQJgjOHxxx9n8ODB1KxZ08MZioiIiHiGhs+4XzTwdXoPMsZUBxbhKIicBwYD9wNNgQ8TwioAK40xBVyTqlOFgWHAUKAHcCfQD3jLjecUERE3KleuHDNnzmT//v306tWLPHnyJIux1rJkyRLuueceWrRowU8//eSFTEVERESyHhVFYDjwCHCntfZuHMWE9HoHyA9cAx6y1o6y1m601q611r4A9E+Iqwj0ddbADcN20rI1vrENa22ktdYAfkAI8G9gJLDEGON3C9clIiKZRFBQEO+//z4HDx7k9ddfx9/f32ncqlWreOCBB2jSpAnffvstOb1HqIiIiEhqcvzwmRsZY4KBgwl3bzp8xhhTB9iccHe6tbankxgfIAyoBJwC7rDWXr0h5j2gYDpSHWOt/f1mQcaYfsA44CVr7dR0tH+zdjV8RkTEi/766y8mT57Mu+++y5kzZ1KMu/feexkyZAgtW7bEGOPBDEVERERcyx3DZ1QUucEtFEVGAoMS7taz1m5KIe4NYHTC3YestWsynGwaJAzt2QEssta2dWG7KoqIiGQCZ86cYcqUKbz99tucOHEixbjq1aszaNAgnnjiCXx9fT2YoYiIiIhraE6RzKlBwv4CsDWVuO+T3K7vvnSSKZmwdz47n4iIZGm33XYbAwcOJDIykkmTJlGyZEmncTt37qRt27aEhoYyb948rl696jROREREJCdRUSTjKiXs91trUys8JB3qUinFqFtgjKlhjEm26o0xpggwKuHuKleeU0REMhd/f3/69OlDREQE06ZNIzg42Gnc3r176dy5M+XLl2f69OlcvnzZs4mKiIiIZCIqimSAMSYvUCzhbqrddqy1p3D0JgHHMrmu1AU4ZIxZYYx53xgz1hizEIgCagBLgE/T06AxJiC1DcfKNiIiksnkyZOHHj16sG/fPubOnUvFihWdxkVGRtKzZ09Kly7NpEmTuHDhgtM4ERER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ERGRrEBFEREREclycuXKRefOndm9ezefffYZ1apVcxp36NAh+vTpQ3BwMGPGjOHs2bMezlREREQyMxVFREREJMvy9fXl6aefZseOHXz55ZfUrVvXadyff/7JwIEDCQoKYtiwYfz1118ezlREREQyIxVFREREJMszxvDII4/w888/s2bNGho1auQ07vTp0wwfPpygoCD69+/P0aNHPZypiIiIZCYqioiIiEi2YYzhH//4B+vWrWP9+vU0b97cadyFCxcYP348ISEh9O7dmz/++MPDmYqIiEhmoKKIiIiIZEv169dn1apV/PLLLzz++ONOY2JjY3n//fcpU6YM3bp1Izw83MNZioiIiDepKCIiIiLZWq1atViyZAlhYWE888wz+Pgk//Xn2rVrzJo1i4oVK9KhQwfCwsK8kKmIiIh4mooiIiIikiOEhoby8ccfs3fvXp5//nly5cqVLCY+Pp4FCxZQtWpV2rRpwy+//OKFTEVERMRTVBQRERGRHKVs2bJ8+OGHHDhwgN69e5M3b16nccuWLaNOnTo0b96cDRs2eDhLERER8QQVRSRNjDG7km7At97OSUREJCMCAwN59913iYyMpH///hQoUMBp3OrVq2nQoAGNGjVizZo1WGs9nKmIiIi4i4oiIiIikqPdcccdjB07lqioKIYNG0bhwoWdxv3www889NBD3HvvvXz55ZfEx8d7OFMRERFxNaNvO+RWGGMCgGiA6OhoAgICvJyRiIiIa5w9e5apU6fy9ttvc/z48RTjqlatyqBBg3jqqafw9fX1YIYiIiI5U0xMDIGBgYl3A621MRltUz1FRERERJIoVKgQAwYM4ODBg0yePDnFwv9vv/1G+/btqVy5MrNnz+bq1asezlREREQySkURERERESfy58/Pyy+/zP79+5kxYwalS5d2Grdv3z6ee+45ypUrx5QpU4iNjfVwpiIiInKrVBQRERERSUWePHno3r07e/fuZf78+VSqVMlpXFRUFL169SIkJISJEydy/vx5D2cqIiIi6aWiiIiIiEga+Pn58eyzzxIWFsbixYupWbOm07ijR4/y+uuvExwczIgRIzh9+rSHMxUREZG0UlFEREREJB18fHx44okn2Lp1KytXruT+++93GvfXX38xdOhQgoKCGDx4MH/++aeHMxUREZGbUVFERERE5BYYY2jRogUbNmzgu+++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OXmjKBKSga20F/KVzKxQIWjTxjVtxcfDfffBkiWgX5RERESylGLFivGf//yHP/74g5EjR1K0aFGncRs3bqRVq1bcc889LF68mPj4eA9nKiIimYnHh89I9pBphs8AfPcdPPiga9u8/36YMMFRJBEREZEs58KFC8yYMYPx48dz5MiRFOMqVqzIoEGDaN++vdPJW0VEJPPITsNnRFyncWPXzisC8NNPjsLIU0/B/v2ubVtERETczt/fn1dffZWIiAimTp1KUFCQ07jff/+dTp06Ub58eaZPn57qpK0iIpL9qCgiWZ8xMG8e+Pvf2vH58kGVKs6fW7wYKleGPn3gr79uPUcRERHxirx589KzZ0/Cw8OZM2cO5cuXdxp38OBBevbsSZkyZXjnnXdSnbRVRESyDxVFJHu45x744ov0F0b8/WH5cvj1V/jsMyjtZNqaq1dh8mQoUwbGjYPYWNfkLCIiIh6TK1cuOnfuzO7du/nss8+oVq2a07hDhw7x6quvEhwczJgxYzh79qyHMxUREU/y6pwixpgmwGNAdaAYkI/UV5ix1toynshNUpep5hRJats26NQJdu26eWyVKjB3rqOgkujyZZg6FYYPh1OnnB93990wahS0b+9YsUZERESyHGst//3vfxk5ciSbNm1KMa5w4cL07t2bV155JcXJW0VExDPcMaeIV4oixpgSwEKgUeJDKYTaG56z1loXrb8qGZFpiyLgWDnm++/hgw8cvUfi4v73nJ+fY7Wal16CRo0cQ2+cOXXKUfh49124csV5TK1aMH48NGni+msQERERj7DW8u233zJy5EjWrVuXYpy/vz8vvvgir732GnfeeafnEhQRkeuyRVHEGJML+BmogaPgsR04DLTEUQT5GLgduAcomfDYNiAMwFrb1aMJi1OZuiiSxNmYsxzffojLJ86Rp1hBStQsRaGAQmlv4OBBGDwYFixIOaZVKxg71jH3iIiIiGRZGzZsYOTIkXz11VcpxuTJk4fnn3+e/v37c/fdd3swOxERyS6rz3QBaibc7mqtrQW8kfiktbaztba1tTYAaAMcASoD/1VBRNLCWscqvU8+CUWCC1GudSWqPFeXcq0rUSS4EE895Xg+TfXAkBD49FPYvNnRs8SZ//4XqlaFnj3h6FGXXouIiIh4Tv369Vm1ahW//PILjz/+uNOYy5cv88EHH1CmTBm6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eZGkXDm13IiISLqgoogEDbXPiIiIL6SbQkl8PGzadPlpkt9+S9218uS5uOWmXj3bcpMli3fzFRERCQIqikjQUFFERET8xdeFkqRiScALJZe23CxbBhs2pK7lJkOG5C03+fN7P18RERE/U1FEgoaKIiIiEkjpolBy/PjlLTcrVlx/y03SOuCyZdVyIyIiaY6KIhI0VBQREZFgE/KFkktbbpLWAe/Zk7pr5cmTfMuNWm5ERCTIqSgiQUNFERERSQtCvlCyZ8/lc0mut+Um6STJ7bdDvnzez1dEROQ6qCgiQUNFERERSauOHIF162D16hAslBw/bttsLm25OXEiddcqWfLyuSRquRERkQBTUUSChooiIiISSkK2UHLhQvItN6ltubnhhstbbqpXV8uNiIj4lYoiEjRUFBERkVAXsoWS3367vEiycWPqW26qVbv8NIlabkRExIdUFJGgoaKIiIikRyFZKDl2LPmWm9S23JQqlbzlxhjv5isiIumWiiISNFQUERERsZIKJWvWXCyWpOlCyYUL9vTIpadJ9qbyZ84rW25q1IDMmb2br4iIpBsqikjQUFFERETEs5ArlHir5SZjxuQtNzfd5P18RUQkJKkoIkFDRREREZGUCalCybFjybfcnDyZumuVKnX5KuAyZdRyIyIirlQUkaChooiIiMj1C5lCyaUtN8uW2efff0/dtW68MfmWG7XciIgIKopIEFFRRERExDcuLZQkFUu8XSipVs2+9lmhxHHcW25S83NnUstN0mmSunXVciMikk6pKCJBQ0URERER/wmJQklSy03SSZKVK1PfclO69OVzSdRyIyKSLqgoIgFjjIm64rcigNKgooiIiEggpPlCyYULsGHD5adJUttykzfv5S031aqp5Ubk/9q79zi5y/ru/69PThA2CacEgQByEMIhIASCHEMISSBBq6HiobZ4thZ7V22tt/a+bdW2/tra3q31dLd3/QlUvVs8hLaahRxICCABAkHCMYAGMREQAyQEQg5c9x/Xd5jJZnd2Znd2Z3bn9Xw85jE7M9/v9b1m5pvNzns+13VJw5ChiJrGUESSpNY3pIOSyiE3pWqStWv7PuTmjDN2ryaZOLHBHZYkDTZDEbUMh89IkjQ0DOmg5Pnn91zl5sUX+9bWlCm7hyTHHeeQG0kaYgxF1DIMRSRJGrq6BiV33QWPPNK/Ngcl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\n",
      "text/plain": [
       "<Figure size 1200x800 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(dpi=200)\n",
    "plt.loglog(Lts,R_coeffs,'bo-',label='mode decomposition')\n",
    "plt.loglog(Lts,R_flux,'ro-',label='Poynting flux')\n",
    "plt.loglog(Lts,[0.005/Lt**2 for Lt in Lts],'k-',label=r'quadratic reference (1/Lt$^2$)')\n",
    "plt.legend(loc='upper right')\n",
    "plt.xlabel('taper length Lt (μm)')\n",
    "plt.ylabel('reflectance')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The reflectance values computed using the two methods are nearly identical. For reference, a line with quadratic scaling is shown in black. The reflectance of the linear waveguide taper decreases quadratically with the taper length which is consistent with the analytic theory.\n",
    "\n",
    "In the reflected-flux calculation, we apply our usual trick of first performing a reference simulation with just the incident field and then subtracting that from our taper simulation with `load_minus_flux_data`, so that what is left over is the reflected fields (from which we obtain the reflected flux).  In *principle*, this trick would not be required for the mode-decomposition method, because the reflected mode is orthogonal to the forward mode and so the decomposition will separate the forward and reflected coefficients automatically. However, this is only true in the limit of infinite resolution — for a *finite* resolution, the reflected mode used for the mode coefficient calculation (calculated via MPB) is not exactly orthogonal to the forward mode propagating in Meep (whose discretization scheme is different from that of MPB). In consequence, if you did not subtract the fields of the reference simulation, the mode-coefficient could only calculate the reflected power down to a \"noise floor\" set by the discretization error. With the subtraction, in contrast, you can compute much smaller reflections (limited by the floating-point precision)."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
